<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        //console.log(num);// num  is  not defined


        console.log(num1);//undefined
        var num1 =10;
        /* 
          var   num1;
          consele.log(num1);
          num1 = 10;
         */

         fn();
         function fn(){
             console.log(11);
         }
         /* 
         function fn(){
             console.log(11);
         }
         fn();
          */
        //   skill(); //skill is not a function
        //   var skill = function (){
        //       console.log(22);
        //   }
          
          var skill;
          skill();
          skill =function (){
              console.log(22);
          }
          
           /* 
           1.js引擎执行代码分两步:先预解析，在执行代码。
           预解析：遇到 var function  关键字的声明，把生命提升到当作有域的最前面
           执行代码:从上往下执行
           2 .预解析分为:变量预解析(变量提升)忽然函数预解析(函数提升)
           变量提升:遇到var 关键字的声明，把声明提升到当前作用域的最前面，不提升赋值。
           函数提升:遇到function  关键字的声明，吧声明提升到当前作用域的最前面，不调用。
           
            */
    </script>
</head>
<body>
    
</body>
</html>